package com.naiterui.ehp.ps.sms.dao.impl;

import java.util.List;

import org.springframework.stereotype.Component;

import com.naiterui.ehp.ps.sms.bean.Template;
import com.naiterui.ehp.ps.sms.dao.ITemplateDao;
import com.naiterui.ehp.ps.sms.repository.ITemplateRepository;

import lombok.RequiredArgsConstructor;

/**
 * 短信模板持久化实现
 *
 * @author
 * @since 1.0.0
 */
@Component
@RequiredArgsConstructor
public class TemplateDaoImpl implements ITemplateDao {

    private final ITemplateRepository templateRepository;

    @Override
    public List<Template> getBySearch(Template template) {
        return templateRepository.findAllByOrderByTemplateIdDescPlatformIdDesc();
    }

    @Override
    public Integer getNextTemplateId() {
        Template template = templateRepository.findFirstByOrderByTemplateIdDesc();
        if (template == null) {
            return 10000;
        } else {
            int max = template.getTemplateId();
            return max + 1;
        }

    }

    @Override
    public Template getTemplateByUnique(Integer platformId, Integer templateId) {
        return templateRepository.findFirstByPlatformIdAndTemplateId(platformId, templateId);
    }

    @Override
    public Template get(Integer id) {
        return templateRepository.get(id);
    }

    @Override
    public void saveOrUpdate(Template template) {
        if (template.getId() == null) {
            templateRepository.save(template);
        } else {
            templateRepository.update(template);
        }
    }

    @Override
    public void delete(Template template) {
        templateRepository.delete(template);
    }

    @Override
    public Template getTemplateByUnique(Integer platformId, Integer deptId, Integer templateId) {
        List<Template> templateList = this.templateRepository.findAllByPlatformIdAndTemplateId(platformId, templateId);
        if (templateList != null && !templateList.isEmpty()) {
            return templateList.get(0);
        }
        return null;
    }

    @Override
    public Template getTemplateByTemplateId(String templateId) {
        Template template = this.templateRepository.findFirstByTemplateId(Integer.valueOf(templateId));
        return template;
    }

    /**
     * 根据条件获取查询模板的HQL TemplateDaoImpl.genBaseQuerySql()
     *
     * @param
     * @param paramList
     *
     * @return
     *
     * @Author
     * @Date 2017年8月11日
     * @since 1.0.0
     */
    private String genBaseQuerySql(Template template, List<Object> paramList) {

        StringBuilder querySb = new StringBuilder(" FROM Template WHERE 1=1 ");
        if (template != null) {
            Integer platformId = template.getPlatformId();
            Integer templateId = template.getTemplateId();
            if (templateId != null) {
                querySb.append(" AND templateId = ? ");
                paramList.add(templateId);
            }
            if (platformId != null) {
                querySb.append(" AND platformId = ? ");
                paramList.add(platformId);
            }
        }
        return querySb.toString();
    }
}
